Skip to content

卸载伪造内存 - VtUnFakeMemory

函数简介

卸载指定地址上的伪造内存,地址支持CE数据格式。(高级版功能,普通版无法使用)

接口名称

VtUnFakeMemory

DLL调用

c
int32_t VtUnFakeMemory(int64_t instance, int64_t hwnd, OLA_STRING_INPUT addr);

参数说明

参数名类型说明
instance长整数型OLAPlug对象的指针,由 CreateCOLAPlugInterFace 接口生成。
hwnd长整数型窗口句柄。
addr字符串地址,支持CE数据格式。例如:[[[<module>+offset1]+offset2]+offset3]<Game.exe>+1234+8+4[<Game.exe>+1234]+8+4[[<Game.exe>+1234]+8]+4<Game.exe>+1234[0x12345678]+10

示例

SDK 调用

cpp
#include "OLAPlugServer.h"

OLAPlugServer ola;
int ret = ola.VtUnFakeMemory(hwnd, "[[[<module>+offset1]+offset2]+offset3]");
csharp
using OLAPlug;

var ola = new OLAPlugServer();
int ret = ola.VtUnFakeMemory(hwnd, "[[[<module>+offset1]+offset2]+offset3]");
python
from OLAPlugServer import OLAPlugServer

ola = OLAPlugServer()
ret = ola.VtUnFakeMemory(hwnd, "[[[<module>+offset1]+offset2]+offset3]")
java
import com.olaplug.OLAPlugServer;

OLAPlugServer ola = new OLAPlugServer();
int ret = ola.VtUnFakeMemory(hwnd, "[[[<module>+offset1]+offset2]+offset3]");
go
import "github.com/ola/olaplug/olaplug"

ola, _ := olaplug.NewOLAPlugServer("OLAPlug_x64.dll")
defer ola.ReleaseObj()
ret := ola.VtUnFakeMemory(hwnd, "[[[<module>+offset1]+offset2]+offset3]")
rust
use olaplug::OLAPlugServer;

let ola = OLAPlugServer::new("OLAPlug_x64.dll").unwrap();
let ret = ola.vt_un_fake_memory(&hwnd, "[[[<module>+offset1]+offset2]+offset3]");
cpp
var ola = com("OlaPlug.OlaSoft")
var ret = ola.VtUnFakeMemory(hwnd, "[[[<module>+offset1]+offset2]+offset3]")
vbscript
Set ola = CreateObject("OlaPlug.OlaSoft")
ret = ola.VtUnFakeMemory(hwnd, "[[[<module>+offset1]+offset2]+offset3]")
text
.局部变量 ola, OLAPlug
ola.创建 ()
ret = ola.VtUnFakeMemory(hwnd, “[[[<module>+offset1]+offset2]+offset3]”)
aardio
import OLAPlugServer;
var ola = OLAPlugServer();
var ret = ola.VtUnFakeMemory(hwnd, "[[[<module>+offset1]+offset2]+offset3]");
text
变量 ola <类型 = OLAPlugServer>
ola = 新建 OLAPlugServer
整数 ret = ola.VtUnFakeMemory(hwnd, "[[[<module>+offset1]+offset2]+offset3]")
cpp
#include "OLAPlugServer.h"

OLAPlugServer ola;
int32_t ret = ola.VtUnFakeMemory(hwnd, "[[[<module>+offset1]+offset2]+offset3]");

原生 DLL 调用

cpp
VtUnFakeMemory(instance, hwnd, "[[[<module>+offset1]+offset2]+offset3]");
csharp
using System.Runtime.InteropServices;
using System.Text;

[DllImport("OLAPlug_x64.dll", CallingConvention = CallingConvention.StdCall)]
static extern int VtUnFakeMemory(long ola, int hwnd, string addr);

VtUnFakeMemory(instance, hwnd, "[[[<module>+offset1]+offset2]+offset3]");
python
from ctypes import CDLL, c_int, c_int64, create_string_buffer

ola = CDLL("OLAPlug_x64.dll")
ola.CreateCOLAPlugInterFace.restype = c_int64
ola.VtUnFakeMemory(instance, hwnd, "[[[<module>+offset1]+offset2]+offset3]")

返回值

成功返回 1;失败时接口返回值即为错误码(有符号 int32,日志里常见负数)。

错误码去哪里读

方式说明
本接口返回值 ret失败时 ret 本身就是错误码,优先用它对照。
GetLastError / GetLastError()读取最后一次错误码(通常与失败时的 ret 一致)。
GetLastErrorString读取中文说明;用完后须 FreeStringPtr 释放。
驱动错误码说明 - DriverErrorCodes十进制 / 十六进制完整对照表;对 ret 做 Ctrl+F 即可定位。
返回值说明
1成功。
0权限不足,或未拿到驱动 Status(如通讯未建立、参数无效)。
其他驱动错误码,见上方「错误码去哪里读」。

TIP

失败示例:int ret = ...; if (ret != 1) { /* 到驱动错误码说明页搜索 ret */ }

注意事项

项目说明
驱动需要先调用 EnableVtDriver 启用VT驱动。
格式地址格式支持CE风格的多级指针链,使用尖括号指定模块名。
卸载后卸载后,目标地址的内存恢复为原始状态,伪造数据不再生效。
如地址为数值型直接地址如地址为数值型直接地址,可使用 VtUnFakeMemoryAddr 接口。